package com.newlink.building.login.ui.fragments

import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.lifecycle.lifecycleScope
import com.newlink.building.login.databinding.FragmentRegisterSuccessBinding
import com.newlink.building.login.ui.Module_Login_ForgetPwdActivityNL
import com.newlink.building.common_base.base.BaseFragment
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

/**
 * @Author: xiaodong
 * @Date: 2024/12/12
 * @Description: 注册成功页面，处理注册或重置密码后的跳转逻辑。
 */
class Module_Login_RegisterSuccessFragment : BaseFragment() {

    // 视图绑定实例
    private lateinit var binding: FragmentRegisterSuccessBinding

    /**
     * Companion object 用于提供 Fragment 实例。
     */
    companion object {
        // Bundle 中用于指示是否需要重置密码的键
        private const val ARG_NEED_RESET_PASSWORD: String = "need_reset_pwd"

        /**
         * 获取 RegisterSuccessFragment 的新实例。
         * @param resetPwd 如果为 true，则表示注册后需要跳转到忘记密码流程。
         * @return RegisterSuccessFragment 实例。
         */
        fun getInstance(resetPwd: Boolean): Module_Login_RegisterSuccessFragment {
            val fragment = Module_Login_RegisterSuccessFragment()
            val bundle = Bundle().apply {
                putBoolean(ARG_NEED_RESET_PASSWORD, resetPwd)
            }
            fragment.arguments = bundle
            return fragment
        }
    }

    /**
     * 绑定布局文件并返回根视图。
     */
    override fun attachLayoutRes(): View {
        binding = FragmentRegisterSuccessBinding.inflate(layoutInflater)
        return binding.root
    }

    /**
     * 初始化视图组件和设置跳转逻辑。
     */
    override fun initView(view: View) {
        // 从 arguments 中获取是否需要重置密码的标志
        val shouldResetPassword = requireArguments().getBoolean(ARG_NEED_RESET_PASSWORD, false)

        // 使用协程在延迟后执行跳转操作
        lifecycleScope.launch {
            delay(1000) // 延迟1秒
            withContext(Dispatchers.Main) {
                handleNavigation(shouldResetPassword)
                activity?.finish() // 完成当前 Activity
            }
        }
    }

    /**
     * 根据是否需要重置密码来处理页面跳转。
     * @param needResetPwd 如果为 true，跳转到忘记密码页面；否则，进行普通登录后的首页跳转（当前被注释）。
     */
    private fun handleNavigation(needResetPwd: Boolean) {
        if (needResetPwd) {
            // 如果需要重置密码，跳转到 ForgetPwdActivity
            val intent = Intent(context, Module_Login_ForgetPwdActivityNL::class.java).apply {
                putExtra("jumpFromRegister", true) // 传递额外参数
            }
            startActivity(intent)
        } else {
            // 否则，执行普通登录后的页面跳转，例如跳转到首页
            // ARouter.getInstance().build(RouterPath.PATH_HOME).navigation() // 原始代码中被注释掉的逻辑
        }
    }

    /**
     * 懒加载方法，当前未实现具体逻辑。
     */
    override fun lazyLoad() {
        // 无需额外的数据加载
    }
}